# -*- coding: utf-8 -*-
"""
@Time    : 2024/10/9 16:36 
@Author  : ZhangShenao 
@File    : 1.验证用户名和QQ号.py 
@Desc    : 验证用户名和QQ号

Python通过标准库中的re模块来支持正则表达式操作

在字符串前面加上"r",表示原始字符串
指的就是字符串中的每个字符都是它原始的意义
也就是字符串中不包含转义字符
因为正则表达式中有很多元字符和需要进行转义的地方
如果不使用原始字符串就需要将反斜杠写作\\,例如表示数字的\d得书写成\\d
这样不仅写起来不方便,阅读的时候也会很吃力
"""
import re


def validate_username_and_qq() -> None:
    """验证用户名与QQ号"""

    username = input("请输入您的用户名：")

    # 使用re模块进行正则表达式相关操作
    # 以r"xxx"开头的字符串,为原始字符串,即忽略字符串的转义功能
    m1 = re.match(r"^[0-9a-zA-Z_]{6,20}$", username)
    if not m1:
        print("用户名不合法")
        return

    qq = input("请输入您的QQ号：")
    m2 = re.match(r"^[1-9]\d{4,11}$", qq)
    if not m2:
        print("QQ号不合法")
        return

    print("用户名和QQ号合法")


if __name__ == '__main__':
    validate_username_and_qq()
